﻿//二分查找的元素个数
//int Front(int* a, int numsLen, double k)
//{
//    int left = 0, right = numsLen - 1, mid = 0;
//    while (left <= right) {
//        mid = (left + right) / 2;
//        if (a[mid] > k)
//            right = mid - 1;
//        else if (a[mid] < k)
//            left = mid + 1;
//        else
//            return mid;
//    }
//    return left;
//}
//int GetNumberOfK(int* nums, int numsLen, int k) {
//    return Front(nums, numsLen, k + 0.1) - Front(nums, numsLen, k - 0.1);
//}

//typedef struct {
//    //入队栈
//    Stack pushST;
//    //出队栈
//    Stack popST;
//} MyQueue;
//
//MyQueue* myQueueCreate(int maxSize) {
//    MyQueue* pqueue = (MyQueue*)malloc(sizeof(MyQueue));
//    StackInit(&pqueue->pushST, maxSize);
//    StackInit(&pqueue->popST, maxSize);
//    return pqueue;
//}
//
//void myQueuePush(MyQueue* obj, int x) {
//    //入队栈进行入栈操作
//    StackPush(&obj->pushST, x);
//}
//
///** Removes the element from in front of queue and returns that element. */
//int myQueuePop(MyQueue* obj) {
//    //如果出队栈为空，导入入队栈的元素
//    if (StackEmpty(&obj->popST) == 0)
//    {
//        while (StackEmpty(&obj->pushST) != 0)
//        {
//            StackPush(&obj->popST, StackTop(&obj->pushST));
//            StackPop(&obj->pushST);
//        }
//    }
//
//    int front = StackTop(&obj->popST);
//    //出队栈进行出队操作
//    StackPop(&obj->popST);
//    return front;
//}
//
//int myQueuePeek(MyQueue* obj) {
//    if (StackEmpty(&obj->popST) == 0)
//    {
//        while (StackEmpty(&obj->pushST) != 0)
//        {
//            StackPush(&obj->popST, StackTop(&obj->pushST));
//            StackPop(&obj->pushST);
//        }
//    }
//
//    return StackTop(&obj->popST);
//}
//
//bool myQueueEmpty(MyQueue* obj) {
//    return StackEmpty(&obj->pushST) == 0
//        && StackEmpty(&obj->popST) == 0;
//}
//
//void myQueueFree(MyQueue* obj) {
//    StackDestroy(&obj->pushST);
//    StackDestroy(&obj->popST);
//    free(obj);
//}